home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 351-375 / disk_369 / spy / istruzioni < prev    next >
Text File  |  1992-05-06  |  10KB  |  283 lines

  1. ==========================================================================
  2.  
  3.  
  4.                     *********    *********    *       *
  5.                     *            *       *    *       *
  6.                     *            *       *    *       *
  7.                     *********    *********    *********
  8.                             *    *                *
  9.                             *    *                *
  10.                     *********    *                *
  11.  
  12.  
  13.  
  14.                                 Version 1.0
  15.  
  16.  
  17.                            by Federico Giannici
  18.  
  19.  
  20. ==========================================================================
  21.  
  22.  
  23.  
  24. SPY e` una spia delle principali funzioni AmigaDOS ed EXEC.
  25.  
  26.  
  27. Il programma e` di Pubblico Dominio, puo` quindi essere copiato liberamente
  28. e  non si e` obbligati  a pagarmi alcunche` per  il suo utilizzo (eventuali
  29. contributi  saranno  comunque  ben  accetti).  Non  e` pero` ammessa alcuna
  30. modifica,  vendita od  inserimento in  programmi commerciali,  senza il mio
  31. permesso scritto. Infine non mi assumo alcuna responsabilita` per eventuali
  32. danni provocati, direttamente o indirettamente, da SPY.
  33.  
  34.  
  35.  
  36.  
  37.  
  38.                                 COSA FA SPY
  39.                                -------------
  40.  
  41.  
  42. Si puo` scegliere  quali funzioni (tra  quelle implementate) mettere  sotto
  43. osservazione.  Da quel momento ogni chiamata  a quelle funzioni da parte di
  44. qualsiasi programma verra` notificata all'utente.
  45.  
  46. Vengono  visualizzati  il  nome  della  funzione,  tutti  i parametri ed il
  47. risultato dell'operazione.
  48.  
  49. I nomi vengono evidenziati con un diverso colore.
  50.  
  51. Inoltre,  spesso SPY mostra, tra parentesi,  il nome della struttura il cui
  52. indirizzo e` stato passato  come parametro, per esempio:  Devices, Library,
  53. Resources, ecc.. Nel caso di un Lock, viene mostrato (sempre fra parentesi)
  54. il  nome del  file o  directory (terminante  con un  segno "/") completo di
  55. tutto il path, corrispondente al lock.
  56.  
  57. Per quanto riguarda  i FileHandle viene  mostrato il nome  del file passato
  58. alla  routine "Open()" al momento dell'apertura del file medesimo. Infatti,
  59. non sono riuscito a trovare  una tecnica ortodossa (documentata) per  poter
  60. risalire al nome del file corrispondente ad un FileHandle.
  61. Come  soluzione parziale al problema,  SPY memorizza il nome corrispondente
  62. ad un determinato FileHandle ad ogni chiamata ad "Open()" e lo cancella  ad
  63. ogni  chiamata a "Close()". Quindi non viene  mostrato ne` il nome dei file
  64. aperti  prima  di  caricare  SPY,  ne`  di quelli aperti quando la funzione
  65. "Open()" non era intercettata.
  66. Per  i  FileHandle  corrispondenti  alle  funzioni  "Input()"  e "Output()"
  67. vengono mostrati rispettivamente con i nomi "<Input>" e "<Output>".
  68. Evidentemente, se la funzione "Close()" non e` intercettata, il buffer  per
  69. la  memorizzazione dei nomi aumenta in  continuazione, e si puo` verificare
  70. l'eventualita`  che  il  nome  del  file  non sia piu` quello corretto. Per
  71. evitare  tutto cio` e`  possibile azzerare il  buffer con il comando "Clear
  72. FileHandle mem" del primo menu`.
  73. E` chiaro che si tratta di una soluzione di ripiego. Saro` grato a chiunque
  74. potra` suggerirmi una soluzione migliore.
  75.  
  76. Infine per le funzioni "Read()" e "Write()" viene anche mostrato il  buffer
  77. da leggere o scrivere come una stringa di caratteri ASCII.
  78.  
  79.  
  80.  
  81.  
  82.  
  83.                                 CARICAMENTO
  84.                                -------------
  85.  
  86.  
  87. SPY puo` essere caricato sia da CLI che da Workbench.
  88. Da  CLI si ha la  possibilita` di specificare, come  parametro, il nome del
  89. file  di  configurazione,  altrimenti  verra`  cercato  il  file di default
  90. "spy.config".
  91. SPY  cerca il file di configurazione  prima nella directory corrente e poi,
  92. nel caso non lo abbia trovato, nella directory "S:".
  93. Nel  caso  non  riuscisse  a  trovare  il  file  di  configurazione  allora
  94. utilizzera`   quella   di   default:   intercettazione   attiva,  stampante
  95. disattivata, tutte  le opzioni  di Preferences  attive e  tutte le funzioni
  96. selezionate tranne "FindName()".
  97.  
  98.  
  99.  
  100.  
  101.  
  102.                                   I MENU`
  103.                                  ---------
  104.  
  105.  
  106.                                   GENERAL
  107.  
  108.  
  109. ACTIVATED
  110. Se selezionato (simbolo di selezione sulla sinistra) SPY e` attivo.
  111.  
  112.  
  113. PRINTER
  114. Se  selezionato, tutto cio` che viene mostrato nelle finestra principale di
  115. SPY viene mandato anche alla stampante.
  116. E` MOLTO  IMPORTANTE che  la stampante  sia effettivamente  ACCESA! In caso
  117. contrario SPY si potrebbe bloccare, oppure, nel caso apparisse il messaggio
  118. "Printer  Troubles - Check Printer and Cables", si potrebbe avere il blocco
  119. di tutto il sistema (nel caso SPY stia intercettando particolari funzioni).
  120.  
  121.  
  122. FUNCTIONS
  123. Tale comando  puo` essere  selezionato, piu`  semplicemente, con  un doppio
  124. click nella finestra principale di SPY.
  125. Permette di accedere alla finestra di selezione delle funzioni intercettate
  126. da  SPY. Le  funzioni attive  sono contrassegnate  dal simbolo di selezione
  127. sulla sinistra.
  128. In basso si possono attivare cinque comandi:
  129.  
  130.           OK: Accetta la lista di funzioni selezionate attualmente mostrata
  131.           sul video.
  132.  
  133.           ALL:  Seleziona  tutte  le  funzioni.  C'e`  un'unica  eccezione:
  134.           "FindName()",  perche` solitamente genera un numero molto elevato
  135.           di chiamate (per  esempio ogni volta  che vengono usati  i menu),
  136.           per cui occorre selezionarla esplicitamente clickandoci sopra.
  137.  
  138.           NONE: Deseleziona tutte le funzioni.
  139.  
  140.           RESTORE:  Ripristina  la  lista  di funzioni selezionate l'ultima
  141.           volta.
  142.  
  143.           CANCEL: Chiude la finestra senza modificare la lista di  funzioni
  144.           selezionate (viene utilizzata quella precedente).
  145.  
  146.  
  147. SAVE CONFIGURATION
  148. Viene chiesto il nome del file di configurazione da registrare.
  149. La  configurazione  comprende  tutte  le  opzioni  di menu`, la lista delle
  150. funzioni attive e la posizione e dimensione della finestra.
  151.  
  152.  
  153. LOAD CONFIGURATION
  154. Viene chiesto il nome del file di configurazione da utilizzare.
  155.  
  156.  
  157. CLEAR FILEHANDLE MEM
  158. Cancella il buffer di memoria dei nomi dei FileHandle (vedi "COSA FA SPY").
  159.  
  160.  
  161. INFORMATIONS
  162. Mostra  un  sotto-menu`  di   presentazione  del  programma  (SPY)   e  del
  163. programmatore (Io!).
  164.  
  165.  
  166. QUIT
  167. Si  puo` attivare anche con il gadget di chiusura della finestra principale
  168. di SPY.
  169. Elimina SPY.
  170. Prima  di  procedere  attende  che  nessun  altro  programma stia eseguendo
  171. qualcuna delle sue funzioni sostitutive.
  172.  
  173.  
  174.  
  175.  
  176.                                 PREFERENCES
  177.  
  178. Queste  opzioni  definiscono  il  comportamento  di  SPY nel momento in cui
  179. intercetta una chiamata ad una delle funzioni attualmente selezionate.
  180.  
  181.  
  182. DESCRIPTION
  183. Se impostato  su "Verbose"  vengono visualizzati  tutti i  parametri ed  il
  184. valore di ritorno della funzione.
  185. Se  impostato su  "Brief" vengono  mostrati, su  di un'unica linea, solo il
  186. nome della funzione ed il parametro principale.
  187.  
  188.  
  189. ACTIVATION
  190. Se  impostato  su  "Failed  Only"  vengono  mostrate  solo  le chiamate che
  191. falliscono.
  192. Altrimenti vengono intercettate tutte le chiamate.
  193.  
  194.  
  195. GO ON
  196. Se  impostato  su  "Wait  for  GO",  una  volta  mostrata  la chiamata alla
  197. funzione, attende una conferma da parte dell'utente.
  198. Comincia a lampeggiare il gadget in fondo alla finestra principale di  SPY,
  199. e  si  puo`  dare  l'ok  clickando  tale  gadget  oppure  premendo un tasto
  200. qualunque (in quest'ultimo caso la finestra di SPY deve essere attiva).
  201. Se  invece  si  e`  impostato  "Immediately",  SPY  non  attendera`  alcuna
  202. conferma.
  203.  
  204.  
  205. SCREENFLASH
  206. Se  impostato su  "Activated", qualora  il programma  sia in  attesa di una
  207. risposta  da  parte  dell'utente  (vedi  punto  precedente), ogni 2 secondi
  208. (circa)  lampeggera`  lo  schermo,  per  informare  l'utente dello stato di
  209. attesa (infatti, nel frattempo, il programma chiamante e` bloccato).
  210.  
  211.  
  212.  
  213.  
  214.  
  215.                                 MISCELLANEA
  216.                                -------------
  217.  
  218.  
  219. La funzione "AllocMem()" viene notificata solo quando si verifica un errore
  220. (memoria insufficiente), in  quanto  e`  chiamata molto spesso  da tutto il
  221. sistema.
  222.  
  223.  
  224. Ci  sono due casi in  cui SPY non puo`  fermarsi ad attendere l'OK da parte
  225. dell'utente (pena il blocco del sistema):
  226.  
  227.                I) Se il  nome della MsgPort  di una chiamata  alla funzione
  228.                "AddPort()" e` "IDCMP" (si e` aperta una finestra).
  229.  
  230.                II)  Tutte  la  chiamate  alla  funzione  "FindName()" fatte
  231.                dall'input.device.
  232.  
  233.  
  234. Per evitare problemi di overflow dello stack, vengono visualizzate solo  le
  235. chiamate effettuate da Task con uno stack di almeno 1600 bytes.
  236. Naturalmente  cio`  non  elimina  completamente  i problemi di overflow, in
  237. quanto SPY non sa quanto sia effettivamente pieno lo stack.
  238. Nel caso si verifichi un  crash del sistema, provate a  disattivare qualche
  239. funzione fintanto che non fili tutto liscio, individuando cosi` quale e` la
  240. funzione incriminata (talvolta e` soltanto una che manda tutto in crash).
  241. La  scelta di 1600  bytes non e`  casuale. Infatti, il  CLI iniziale ha uno
  242. stack di 1600 bytes  (almeno fino al sistema  operativo V1.3), anche se  al
  243. momento  di eseguire  un comando  diventa (!?)  di 4000  bytes. Qualcuno sa
  244. dirmi perche`?
  245.  
  246. Altri curiosi comportamenti del CLI (scoperti con SPY):
  247.  
  248. Quando il CLI deve eseguire  un comando apre la dos.library  (probabilmente
  249. per   ottenere  l'indirizzo   DOSBase)  senza   pero`  richiuderla   con la
  250. "CloseLibrary()". Il  contatore di  aperture della  libreria viene comunque
  251. successivamente decrementato, probabilmente dallo stesso CLI.
  252.  
  253. Le  chiamate fatte dai comandi standard del CLI (Dir, CD, Delete, ecc.) non
  254. vengono intercettate.  Penso che  cio` dipenda  dal fatto  che tali comandi
  255. utilizzino  una propria libreria interna (probabilmente in BCPL) che chiama
  256. direttamente le  routine di  sistema senza  passare dalle  jump-table delle
  257. librerie.
  258.  
  259.  
  260.  
  261.  
  262.  
  263.                               PER CONCLUDERE
  264.                              ----------------
  265.  
  266.  
  267. Per  qualsiasi consiglio,  critica, bug,  contributo, e  soprattutto elogi,
  268. potete contattarmi all'indirizzo che appare  nel menu del programma (e  che
  269. per i piu` pigri riporto alla fine di queste note) oppure sulla BBS MC-Link
  270. (06-4180440, il mio codice e` MC4080).
  271.  
  272. Buone investigazioni con SPY.
  273.  
  274.  
  275.  
  276.  
  277.                                                   Federico Giannici
  278.  
  279.                                                   Viale Francia 4
  280.                                                   90146 Palermo
  281.                                                   Italy
  282.  
  283.